package ningbo.oop;

/**
 * @Author 宁铂
 * @Date 2021/7/13 21:36
 * @Version 1.0
 */
public class AbstractDemo {
    /** 本类用于测试抽象类的入门案例 */
}

abstract class Car{
    public void start(){
        System.out.println("启动");
    }

    public void stop(){
        System.out.println("停止");
    }

    /** 定义抽象方法
     *  被abstract 修饰的方法，是抽象方法，抽象方法没有方法体
     *  如果一个类中包含了抽象方法，那么这个类必须被声明成一个抽象类
     * */
    public abstract void fly();
    public abstract void fly2();
}

/** 当一个子类继承了抽象父类以后，有两种解决方案：
 *  1.变成抽象子类，”躺平，我不实现，继续抽象“
 *  2.实现父类中的所有抽象方法，”父债子偿“
 * */
abstract class BMW extends Car{ //方案一

}

class BYD extends Car{ //方案二

    @Override
    public void fly() {
        System.out.println("能开了");
    }

    @Override
    public void fly2() {
        System.out.println("必须实现抽象父类的所有抽象方法");
    }
}